home *** CD-ROM | disk | FTP | other *** search
/ E.M.Computergraphic Phase 1 / Phase 1 - EMC Computergraphic.iso / utilities / forceicon / source / forceicon.h < prev    next >
Text File  |  1995-07-19  |  14KB  |  356 lines

  1. /*
  2. Auto:        smake ForceIcon
  3. */
  4.  
  5.  
  6. /* $Revision Header built automatically *************** (do not edit) ************
  7. **
  8. ** © Copyright by GuntherSoft
  9. **
  10. ** File             : SnakeSYS:CPrgs/Utils/ForceIcon/ForceIcon.h
  11. ** Created on       : Wednesday, 20.10.93 17:19:27
  12. ** Created by       : Kai Iske
  13. ** Current revision : V1.5
  14. **
  15. **
  16. ** Purpose
  17. ** -------
  18. **   - ForceIcon Header file
  19. **
  20. ** Revision V1.5
  21. ** --------------
  22. ** created on Wednesday, 13.04.94 15:15:29  by  Kai Iske.   LogMessage :
  23. **  -*-  changed on Tuesday, 24.05.94 15:02:04  by  Kai Iske.   LogMessage :
  24. **   - Width/Height for Drawer window were handled the
  25. **     wrong way. (Swapped)
  26. **     (Reported by : Juergen Zeschky)
  27. **  -*-  changed on Tuesday, 24.05.94 14:59:44  by  Kai Iske.   LogMessage :
  28. **   - The Drawer window wasn`t updated, when one changed the
  29. **     Integer gadgets
  30. **  -*-  changed on Tuesday, 24.05.94 14:58:44  by  Kai Iske.   LogMessage :
  31. **   - When opening the Position window, it`s position was always
  32. **     set to the position which was specified when the EditEntry
  33. **     window was opened, thus no intermediate changes were
  34. **     reflected. Same applied to the Drawer window
  35. **     (Reported by : Michael 'Mick' Hohmann)
  36. **  -*-  changed on Wednesday, 13.04.94 15:25:11  by  Kai Iske.   LogMessage :
  37. **   - Added note about AmiCDROM 1.9 to the docs
  38. **     (Suggested by : Manuel Fischer)
  39. **  -*-  changed on Wednesday, 13.04.94 15:21:25  by  Kai Iske.   LogMessage :
  40. **   - Added note to docs about disks not containing a Disk.info
  41. **     file. READ THIS!
  42. **  -*-  created on Wednesday, 13.04.94 15:15:29  by  Kai Iske.   LogMessage :
  43. **   - Position window wasn`t moved, when user changed the
  44. **     contents of the integer gadgets (IconX/IconY)
  45. **
  46. ** Revision V1.4
  47. ** --------------
  48. ** created on Saturday, 19.02.94 01:27:31  by  Kai Iske.   LogMessage :
  49. **  -*-  changed on Thursday, 24.03.94 16:43:23  by  Kai Iske.   LogMessage :
  50. **   - EditEntry window`s cycle gadgets (IconPos, UseIcon etc..)
  51. **     are volume type senstive now, ie Ignore,Use,Inherit will be
  52. **     available when Type is set to "Volume",  while Ignore and
  53. **     Use are available when editing a device.
  54. **     (Suggested by : Christopher A. Wichura)
  55. **  -*-  changed on Wednesday, 23.03.94 12:49:17  by  Kai Iske.   LogMessage :
  56. **   - Inheritance of device settings is individually controlled
  57. **     for every entry through a cycle gadget, so that you may
  58. **     tell which items to inherit and which to ignore, or use.
  59. **     (Requested by : Christopher A. Wichura)
  60. **  -*-  changed on Tuesday, 22.03.94 23:19:46  by  Kai Iske.   LogMessage :
  61. **   - You may now force Window size/position and flags
  62. **     (display flags)
  63. **     (Requested by : Christopher A. Wichura)
  64. **  -*-  changed on Tuesday, 22.03.94 18:32:58  by  Kai Iske.   LogMessage :
  65. **   - The ListViews will show volumes in white color now, so
  66. **     that you may distinguish whether an entry is a Volume or a
  67. **     Device
  68. **  -*-  changed on Saturday, 19.03.94 17:58:56  by  Kai Iske.   LogMessage :
  69. **   - Diskobject for Iconify Gadget will obtained from the
  70. **     program`s icon
  71. **  -*-  changed on Saturday, 19.03.94 17:52:54  by  Kai Iske.   LogMessage :
  72. **   - Added online-help support
  73. **  -*-  changed on Saturday, 19.03.94 17:17:15  by  Kai Iske.   LogMessage :
  74. **   - Made behaviour of obtaining settings from a device entry
  75. **     for a volume entry switchable from ToolTypes/commandline
  76. **     options.
  77. **  -*-  changed on Saturday, 19.03.94 16:24:58  by  Kai Iske.   LogMessage :
  78. **   - ForceIcon will use memory pools for allocations now.
  79. **  -*-  changed on Saturday, 19.03.94 16:23:41  by  Kai Iske.   LogMessage :
  80. **   - For volumes, for which some flags aren`t set (like IconPos or
  81. **     UseIcon) ForceIcon will take the settings of the device
  82. **     the volume resides in as long as it is a) defined and b)
  83. **     the missing flag is set there.
  84. **     (Suggested by : Christopher A. Wichura)
  85. **  -*-  changed on Saturday, 19.03.94 15:43:18  by  Kai Iske.   LogMessage :
  86. **   - DiskChanges on startup protected by Semaphore
  87. **     (Suggested by: Christopher A. Wichura)
  88. **  -*-  changed on Saturday, 19.03.94 15:42:06  by  Kai Iske.   LogMessage :
  89. **   - LoadPrefs() protected by Semaphore
  90. **     (Suggested by: Christopher A. Wichura)
  91. **  -*-  changed on Thursday, 17.03.94 18:24:44  by  Kai Iske.   LogMessage :
  92. **   - If you quit the EditEntry window using "OK", ForceIcon_Prefs
  93. **     will send a disk change to the device in question...
  94. **   - Improved semaphore locking mechanism. Chris didn`t like it,
  95. **     so I changed it, even though I can`t see his point (for now)
  96. **     (Requested by : Christopher A. Wichura)
  97. **  -*-  changed on Wednesday, 16.03.94 22:23:30  by  Kai Iske.   LogMessage :
  98. **   - Added FlushMemory switch/tooltype
  99. **   - Only devices in the list (or their volumes) will get a 
  100. **     disk change on startup now
  101. **     (Requested by : Christopher A. Wichura)
  102. **  -*-  changed on Wednesday, 16.03.94 22:22:13  by  Kai Iske.   LogMessage :
  103. **   - Added server prefs concept. ForceIcon is a simple program
  104. **     now, w/o any GUI. A seperate Prefs Editor has been added
  105. **     (using MUI) to configure ForceIcon.
  106. **   - Rearrangement of List after editing an entry didn`t work
  107. **  -*-  changed on Saturday, 12.03.94 19:32:33  by  Kai Iske.   LogMessage :
  108. **   - Again changed the routine for getting the list of available
  109. **     volumes/devices
  110. **     (Suggestions by : Ralph Babel)
  111. **  -*-  changed on Saturday, 12.03.94 19:31:48  by  Kai Iske.   LogMessage :
  112. **   - Didn`t convert a string to upper-case before calling
  113. **     ParsePatternNoCase(). This has to be done for OS 37
  114. **     Systems.
  115. **     (Reported by : Christopher A. Wichura)
  116. **  -*-  changed on Saturday, 12.03.94 14:23:12  by  Kai Iske.   LogMessage :
  117. **   - Added special code to check for block mounted devices.
  118. **     (Supplied by : Christopher A. Wichura. Thanks Chris)
  119. **  -*-  changed on Thursday, 10.03.94 14:23:11  by  Kai Iske.   LogMessage :
  120. **   - When adding a new item to the list, another entry could
  121. **     loose the settings for the IconPos gadget. This was due to a
  122. **     bug in the sorting routine. Fixed
  123. **     (Reported by : Mark 'TheMug' Rose)
  124. **  -*-  changed on Thursday, 10.03.94 14:02:35  by  Kai Iske.   LogMessage :
  125. **   - Patterns for Volumes and Devices supported now
  126. **  -*-  changed on Sunday, 06.03.94 17:38:53  by  Kai Iske.   LogMessage :
  127. **   - When launched ForceIcon will now make all connected disks
  128. **     disk change, in order to reposition the icons. This way you
  129. **     may launch ForceIcon from within your WBStartUp now
  130. **     (Requested by : Henning Schmiedehausen)
  131. **  -*-  changed on Sunday, 06.03.94 17:20:31  by  Kai Iske.   LogMessage :
  132. **   - Enforcer Hit for illegal Locks fixed
  133. **     (Changed by : Henning Schmiedehausen)
  134. **   - Windows will pop up on default PubScreen now
  135. **     (Changed by : Henning Schmiedehausen)
  136. **  -*-  changed on Sunday, 27.02.94 17:52:56  by  Kai Iske.   LogMessage :
  137. **   - More security checks when removing patches
  138. **     (Requested/Changed by : Henning Schmiedehausen)
  139. **  -*-  created on Saturday, 19.02.94 01:27:31  by  Kai Iske.   LogMessage :
  140. **   - ForceIcon didn`t clone all of the window`s flags
  141. **   - For some icon-substitutes, ForceIcon didn`t clone anything
  142. **     (Reported by : Michael 'Mick' Hohmann)
  143. **
  144. ** Revision V1.3
  145. ** --------------
  146. ** created on Sunday, 02.01.94 15:31:32  by  Kai Iske.   LogMessage :
  147. **   - Code cleanup
  148. **   - Partial rewrite of docs
  149. **
  150. ** Revision V1.2
  151. ** --------------
  152. ** created on Tuesday, 07.12.93 18:10:09  by  Kai Iske.   LogMessage :
  153. **   - Entries may be copied now
  154. **
  155. ** Revision V1.1
  156. ** --------------
  157. ** created on Tuesday, 02.11.93 23:11:14  by  Kai Iske.   LogMessage :
  158. **  -*-  changed on Saturday, 27.11.93 02:12:59  by  Kai Iske.   LogMessage :
  159. **   - Recompiled using SAS 6.50
  160. **  -*-  changed on Saturday, 20.11.93 18:14:21  by  Kai Iske.   LogMessage :
  161. **   - ForceIcon will adopt the orig. window position and size now.
  162. **     (Suggested by : Michael 'Mick' Hohmann and me)
  163. **  -*-  changed on Saturday, 20.11.93 18:03:08  by  Kai Iske.   LogMessage :
  164. **   - Icons weren`t positions as set with the Position window.
  165. **     (Reported by : Michael 'Mick' Hohmann)
  166. **   - Misleading explanation removed from docs
  167. **     (Reported by : Michael 'Mick' Hohmann)
  168. **  -*-  changed on Saturday, 20.11.93 17:33:51  by  Kai Iske.   LogMessage :
  169. **   - The X/Y coordinates may be set manually, now.
  170. **     (Requested by : Michael 'Mick' Hohmann)
  171. **  -*-  changed on Saturday, 20.11.93 17:24:20  by  Kai Iske.   LogMessage :
  172. **   - Edit Entry window`s gadget used 'I' twice
  173. **     (Reported by : Michael 'Mick' Hohmann)
  174. **  -*-  changed on Thursday, 11.11.93 18:43:27  by  Kai Iske.   LogMessage :
  175. **   - You may now tell ForceIcon not to patch the position, but
  176. **     rather let WB chose a good place. (Good when importing
  177. **     volumes via network)
  178. **  -*-  changed on Tuesday, 02.11.93 23:23:00  by  Kai Iske.   LogMessage :
  179. **   - ListView gadgets weren`t adjusted for OS 2.x. - Should check
  180. **     for OS 2.x sometime ;)
  181. **     (Reported by : Bernhard Moellemann)
  182. **   - Changed needed Versions of some libraries from 37 to 36
  183. **  -*-  created on Tuesday, 02.11.93 23:11:14  by  Kai Iske.   LogMessage :
  184. **   - If there wasn`t a filename for the Icon-File the
  185. **     FileRequester sometimes showed a weird Drawer-Name
  186. **     (Reported by : Dirk Federlein)
  187. **
  188. ** Revision V1.0
  189. ** --------------
  190. ** created on Wednesday, 20.10.93 17:19:27  by  Kai Iske.   LogMessage :
  191. **  -*-  changed on Thursday, 28.10.93 17:35:28  by  Kai Iske.   LogMessage :
  192. **   - Suggestions for device dependancy by Ralph Babel
  193. **   - Bug "found" by Ralph Babel
  194. **   - Pos window used to open on default pubscreen, not on WB.
  195. **     (Reported by : Bernhard Moellemann)
  196. **  -*-  created on Wednesday, 20.10.93 17:19:27  by  Kai Iske.   LogMessage :
  197. **     --- Initial release ---
  198. **
  199. *********************************************************************************/
  200. #define REVISION "1.5"
  201. #define REVDATE  "24.05.94"
  202. #define REVTIME  "15:02:04"
  203. #define AUTHOR   "Kai Iske"
  204. #define VERNUM   1
  205. #define REVNUM   5
  206.  
  207.  
  208. /**********************************************************************/
  209. /*                   Prototype for serial debugging                   */
  210. /**********************************************************************/
  211. void KPrintF(char *, ...);
  212.  
  213.  
  214.  
  215. /**********************************************************************/
  216. /*                   Prototypes for Pool functions                    */
  217. /**********************************************************************/
  218. APTR    __asm AsmCreatePool(register __d0 ULONG, register __d1 ULONG, register __d2 ULONG, register __a6 struct ExecBase *);
  219. void    __asm AsmDeletePool(register __a0 APTR, register __a6 struct ExecBase *);
  220. APTR    __asm AsmAllocPooled(register __a0 APTR, register __d0 ULONG, register __a6 struct ExecBase *);
  221. void    __asm AsmFreePooled(register __a0 APTR, register __a1 APTR, register __d0 ULONG, register __a6 struct ExecBase *);
  222.  
  223.  
  224.  
  225. /**********************************************************************/
  226. /*                              Defines                               */
  227. /**********************************************************************/
  228. enum{
  229.     ERR_OPEN,
  230.     ERR_NOMEM,
  231.     ERR_NOTALL,
  232.     ERR_ABOUT,
  233.     ERR_EXISTS,
  234.     ERR_NONEG,
  235.     ERR_PATCHES,
  236.     ERR_PATCH,
  237.     ERR_NO_RELAUNCH,
  238.     ERR_NO_APP
  239. };
  240.  
  241.  
  242.  
  243. /**********************************************************************/
  244. /*                        Nodes for Guide file                        */
  245. /**********************************************************************/
  246. #define    NODE_MAIN        "Usage"
  247. #define    NODE_LEFT        "Left part"
  248. #define    NODE_RIGHT        "Right part"
  249. #define    NODE_EDIT        "EditEntry"
  250. #define    NODE_MANUAL        "ManualInput"
  251.  
  252.  
  253.  
  254. /**********************************************************************/
  255. /*                    This is our rendezvous Port                     */
  256. /**********************************************************************/
  257. struct FIconSema
  258. {
  259.     struct    SignalSemaphore    FIconSema;        // Our semaphore
  260.  
  261.     ULONG            UseCount;        // Use count of semaphore
  262.     char    Name[44];                // Name of semaphore
  263.  
  264.     struct    List        VolumeList;        // List of volumes
  265.     struct    Task        *ServerTask;        // Address of ServerTask
  266.  
  267.     APTR            FIconPool;        // Pool for allocations
  268.  
  269.     UWORD            FlushMemory;        // Flushmemory ???
  270.     UWORD            ObtainFromDev;        // Get settings from device when not set for volume ???
  271. };
  272.  
  273.  
  274.  
  275.  
  276.  
  277. /**********************************************************************/
  278. /*                         Structure defines                          */
  279. /**********************************************************************/
  280. struct VolEntry
  281. {
  282.     struct    Node    Link;
  283.     char        VolName[130];
  284.     char        IconName[256];
  285.     UWORD        Left;
  286.     UWORD        Top;
  287.     UWORD        UseAlt;
  288.     UWORD        IconPos;
  289.     UWORD        UseWin;
  290.     WORD        WinX;
  291.     WORD        WinY;
  292.     WORD        WinWidth;
  293.     WORD        WinHeight;
  294.     UWORD        UseFlags;
  295.     UWORD        WinFlags;
  296.     UWORD        Pad[25];        // For future expansions
  297.     WORD        LeftEdge;        // These are only used during runtime
  298.     WORD        TopEdge;
  299.     WORD        Width;
  300.     WORD        Height;
  301.     LONG        CurrentX;
  302.     LONG        CurrentY;
  303.     ULONG        Flags;
  304.     UWORD        ViewMode;
  305.     struct    MsgPort    *DriverTask;
  306. };
  307.  
  308.  
  309.  
  310. /**********************************************************************/
  311. /*                        Defines for windows                         */
  312. /**********************************************************************/
  313. enum {
  314.     ID_DUMMY,
  315.  
  316.     ID_USEDLIST,            // Main window
  317.     ID_EDITENTRY,
  318.     ID_COPYENTRY,
  319.     ID_REMOVEENTRY,
  320.     ID_AVAILLIST,
  321.     ID_ADDENTRY,
  322.     ID_ADDENTRYMAN,
  323.     ID_RESCANLIST,
  324.     ID_SAVE,
  325.     ID_USE,
  326.     ID_ABOUT,
  327.     ID_HIDE,
  328.     ID_QUIT,
  329.  
  330.     ID_EDITOK,            // Edit window
  331.     ID_EDITCANCEL,
  332.     ID_ICONX,
  333.     ID_ICONY,
  334.     ID_POSITION,
  335.     ID_DRAWER,
  336.     ID_WINX,
  337.     ID_WINY,
  338.     ID_WINWIDTH,
  339.     ID_WINHEIGHT,
  340.  
  341.     ID_MANOK,            // Man window
  342.     ID_MANCANCEL
  343. };
  344.  
  345.  
  346.  
  347.  
  348. /**********************************************************************/
  349. /*                         Modes for settings                         */
  350. /**********************************************************************/
  351. enum {
  352.     MODE_IGNORE,
  353.     MODE_USE,
  354.     MODE_INHERIT
  355. };
  356.